/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package documentadorrepositorio.descritoresArtefatos;

import documentadorrepositorio.artefatos.Artefato;
import documentadorrepositorio.artefatos.HistoriaDeUsuario;
import documentadorrepositorio.componentes.PainelListaArtefatos;
import documentadorrepositorio.interfaceGrafica.PrincipalIG;
import documentadorrepositorio.repositorio.AnalisadorRepositorio;
import documentadorrepositorio.util.IOUtil;
import java.awt.Component;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author DEP
 */
public class DescritorHistoriaDeUsuario extends DescritorArtefato {

    private static DescritorArtefato instancia = null;
    
    public static DescritorHistoriaDeUsuario obtemInstacia() throws IOException {
        if (instancia == null) {
            instancia = new DescritorHistoriaDeUsuario();
        }
        return (DescritorHistoriaDeUsuario) instancia;
    }

    private DescritorHistoriaDeUsuario() throws IOException {
        super("DescritorPastaHistoriaDeUsuario.data", "DescritorArquivoHistoriaDeUsuario.data");
    }

    @Override
    protected void criaDescritorPasta() throws IOException {
        List<String> padroesPasta = new ArrayList<>();
        padroesPasta.add("historia de usuario");
        padroesPasta.add("historias de usuario");
        padroesPasta.add("historiasdeusuario.*");
        padroesPasta.add("história de usuário");
        padroesPasta.add("histórias de usuário");
        padroesPasta.add("históriadeusuário.*");
        padroesPasta.add("hu");
        IOUtil.criaArquivoTexto("DescritorPastaHistoriaDeUsuario.data", padroesPasta);
    }

    @Override
    protected void criaDescritorArquivo() throws IOException {
        List<String> padroesArquivo = new ArrayList<>();
        padroesArquivo.add("hu");
        padroesArquivo.add("hu.*");
        IOUtil.criaArquivoTexto("DescritorArquivoHistoriaDeUsuario.data", padroesArquivo);
    }

    @Override
    public String obtemTipoArtefato() {
        return "História de Usuário";
    }

    @Override
    protected Artefato obtemInstancia() {
        return new HistoriaDeUsuario(super.getSigla());
    }
    
    @Override
    public void destroiInstancia() {
        instancia = null;
    }
    
    @Override
    public void instanciarTela(AnalisadorRepositorio analisadorRepositorio, DescritorArtefato descritorArtefato, PrincipalIG frame) {
        PainelListaArtefatos painelArtefatos = new PainelListaArtefatos();
        List<Artefato> artefatos = analisadorRepositorio.getArtefatos().get(descritorArtefato);
        DefaultTableModel modeloTabela = ((DefaultTableModel) painelArtefatos.getTblArtefato().getModel());
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        if (artefatos != null) {
            for (Artefato artefato : artefatos) {
                modeloTabela.addRow(new Object[]{
                    artefato.getNumeroArtefato(),
                    artefato.getNomeArtefato(),
                    dateFormat.format(artefato.getDataCommit()),
                    artefato.getReview(),
                    //descritorArtefato.obtemTipoArtefato(), 
                    true
                });
            }
        }
        frame.getTbArtefato().add(obtemTipoArtefato(), painelArtefatos);
    }
}
